Para a nossa análise, iremos escolher algumas variáveis que julgamos interessantes para uma possível visualização de relação com a variável dependente like.
N-ésimo encontro da noite
O número do encontro pode ter influência na nossa variável dependente visto que os encontros anteriores podem ter influência direta na expectativa além de também contribuir na desenvoltura dos participantes, pois o participante pode “se soltar” mais fazendo com que os encontros sejam melhores.
Correlação entre os interesses dos participantes.
Identificar-se com uma pessoa através de algum interesse pode ser um fator decisivo na hora do like.
Indica se os participantes são da mesma raça.
A vida tem dessas ¯\_(ツ)_/¯.
age: Idade do participante 1;
age_o: Idade do participante 2.
A diferença de idade pode influenciar positiva ou negativamente na decisão dos participantes.
Campo de estudo do participante 1.
Raça do participante 1:
1 - Black/African American;
2 - European/Caucasian-American;
3 - Latino/Hispanic American;
4 - Asian/Pacific Islander/Asian-American;
5 - Native American;
6 - Other.
A vida tem dessas ¯\_(ツ)_/¯.
De onde o participante 1 é.
A vida tem dessas ¯\_(ツ)_/¯.
Quão atraente o participante 1 achou o participante 2.
Quão sincero o participante 1 achou o participante 2.
Quão inteligente o participante 1 achou o participante 2.
Quão divertido o participante 1 achou o participante 2.
Quão ambicioso o participante 1 achou o participante 2.
Quão atraente o participante acha que é.
Se o participante se acha muito atraente, talvez ele possa ser mais exigente.
Usaremos essa variável para verificar se a diferença entre a “atratividade” (attr3_s e attr) impacta no like.
Quão sincero o participante acha que é.
Usaremos essa variável para verificar se a diferença de sinceridade (since3_s e sinc) impacta no like.
Quão inteligente o participante acha que é.
Usaremos essa variável para verificar se a diferença de inteligência (intel3_s e intel) impacta no like.
Quão divertido o participante acha que é.
Usaremos essa variável para verificar se a diferença de “diversão” (fun3_s e fun) impacta no like.
Quão ambicioso o participante acha que é.
É possível que uma pessoa ambiciosa queira outra pessoa para compartilhar ambições. Usaremos essa variável para verificar se a diferença de ambição (amb3_s e amb) impacta no like.
Como temos muitas variáveis que podem influenciar positiva ou negativamente, iremos selecionar algumas e verificar a influência delas na nossa variável resposta, o like.
Como diria a querida Irene Adler, “brainy is the new sexy”.
Baseando-nos no que foi dito pela Irene Adler, iremos utilizar as “inteligências” e “atratividades” dos participantes e verificar se são fatores significantes na hora do like. Ou seja, as variáveis intel, attr, intel3_s e attr3_s.
Selecionando as variáveis que iremos analisar e retirando todos os registros que não possui um valor válido para qualquer uma das variáveis.
data %>%
select(like, intel, intel3_s, attr, attr3_s) %>%
na.omit(intel3_s, attr3_s, intel, attr) %>%
mutate(
intel3_s = as.numeric(intel3_s),
attr3_s = as.numeric(attr3_s)
) -> brainy_sexy
brainy_sexy %>%
ggplot(aes(intel)) +
geom_density(stat = "density",
position = "identity", color = "darkorange") +
geom_point(aes(x = median(intel), y = 0.2, color = 'Mediana'))
Podemos perceber que existe uma maior concentração de valores acima de 7 (mediana) para a variável intel.
O valor da mediana e a densidade a partir da mediana pode nos indicar que os participantes 2 parecem ter uma inteligência relativamente alta (acima da mediana).
brainy_sexy %>%
ggplot(aes(intel3_s)) +
geom_density(stat = "density",
position = "identity", color = "darkgreen") +
geom_point(aes(x = median(intel3_s), y = 0.6, color = 'Mediana'))
Podemos perceber que existe uma grande concentração de participantes que se dão uma nota 8 (de 10) sobre a sua inteligência. Além de termos algumas pessoas modestas (ou com a autoestima baixa), temos uma maior densidade para quando a avaliação é acima de 8.
brainy_sexy %>%
ggplot(aes(attr)) +
geom_density(stat = "density",
position = "identity", color = "darkred") +
geom_point(aes(x = median(attr), y = 0.2, color = 'Mediana'))
O valor de attr para os participantes 2 é bem diversivificado, isso não quer dizer que sejam mais ou menos bonitas pelo fato de não termos uma definição dos próprios participantes o que é uma pessoa atraente para eles. Mas para facilitar a nossa análise, iremos usar essa variável como um conjunto de outros atributos, não somente a beleza física.
brainy_sexy %>%
ggplot(aes(attr3_s)) +
geom_density(stat = "density",
position = "identity", color = "darkcyan") +
geom_point(aes(x = median(attr3_s), y = 0.5, color = 'Mediana'))
Por outro lado, alguns dos participantes 1 se auto classificaram com sendo atraentes (7 de 10).
mod_ip1 <- lm(like ~ intel3_s,
data = brainy_sexy)
glance(mod_ip1)
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC
## * <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.000468 -0.0000361 1.78 0.928 0.335 2 -3953. 7911. 7928.
## # ... with 2 more variables: deviance <dbl>, df.residual <int>
Com um R² de 0.0004684427 podemos perceber que o que o participante pensa sobre si mesmo a cerca da inteligência não tem tanta significância (separadamente) na decisão.
mod_ip2 <- lm(like ~ intel,
data = brainy_sexy)
glance(mod_ip2)
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC
## * <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl>
## 1 0.242 0.242 1.55 633. 2.23e-121 2 -3678. 7362.
## # ... with 3 more variables: BIC <dbl>, deviance <dbl>, df.residual <int>
Com os valores obtidos podemos perceber o modelo com a inteligência do participante 2 explica aproximadamente 24% da nossa variável resposta (like).
mod_ip1p2 <- lm(like ~ intel3_s + intel,
data = brainy_sexy)
glance(mod_ip1p2)
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC
## * <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl>
## 1 0.242 0.241 1.55 316. 5.70e-120 3 -3678. 7364.
## # ... with 3 more variables: BIC <dbl>, deviance <dbl>, df.residual <int>
Como vimos mais acima que a inteligência do participante 1 não tem tanta significância sobre a decisão final, era esperado que também obtivessemos praticamente o valor da “significância” inteligência do participante 2.
brainy_diff <- brainy_sexy %>% mutate(intel_dif = intel - intel3_s)
mod_diff <- lm(like ~ intel_dif,
data = brainy_diff)
glance(mod_diff)
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC
## * <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.149 0.149 1.64 347. 1.42e-71 2 -3793. 7592. 7608.
## # ... with 2 more variables: deviance <dbl>, df.residual <int>
Visualizando a importância da diferença de inteligência dos participantes, percebemos que esse modelo explica aproximadamente 14% dos dados.
Utilizaremos o modelo lm(like ~ intel3_s + intel).
tidy(mod_ip1p2,
conf.int = TRUE,
conf.level = 0.95)
## # A tibble: 3 x 7
## term estimate std.error statistic p.value conf.low conf.high
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 2.10 0.280 7.49 1.01e- 13 1.55 2.64
## 2 intel3_s -0.0185 0.0286 -0.648 5.17e- 1 -0.0746 0.0375
## 3 intel 0.566 0.0225 25.1 3.30e-121 0.522 0.610
tidy(mod_ip1p2,
conf.int = TRUE,
conf.level = 0.95) %>%
filter(term != "(Intercept)") %>%
ggplot(aes(term, estimate, ymin = conf.low, ymax = conf.high)) +
geom_errorbar(size = 0.8, width= 0.4) +
geom_point(color = "darkgreen", size = 2) +
geom_hline(yintercept = 0, colour = "darkred") +
labs(x = "Variável",
y = "Valor estimado (95% de confiança)")
A inteligência do participante 2 tem valores entre [0.52204315, 0.61041362] com 95% de confiança, ou seja, eles possuem um efeito sempre positivo na variável resposta.
Como é possível ver mais acima, a inteligência do participante 1 passa pelo eixo y = 0 (com 95% de confiança) o que nos indica um efeito meio incerto, podendo ser positivo ou negativo.
De modo geral, a inteligência do participante tem uma influência positiva na decisão final. Podemos perceber que a inteligência do participante 2 é bem mais “importante” do que a do participante 1 para que haja um bom like, e isso de certo modo era esperado pois em um encontro você leva em consideração mais os aspectos da pessoa a qual você está tendo o encontro.
Com 95% de confiança, podemos afirmar que a inteligência do participante 2 tem efeito significante sobre sobre o resultado justamente por não passar pelo eixo y = 0.
Por outro lado, a inteligência do participante 1 não nos trás muita informação útil, visto que passa pelo eixo y = 0 com 95% de confiança.
Levando em consideração a inteligência do participante 2 (ou a “soma” das duas inteligências), obtivemos valores próximos de 24%, o que não é um valor absurdamente alto ou que mostre uma significância que talvez fosse esperada.
Talvez brainy não seja tão o novo sexy assim como disse a Irene Adler.
Não podemos considerar esse modelo relevante pois ele explica somente 24% dos nossos dados.
mod_ap1 <- lm(like ~ attr3_s,
data = brainy_sexy)
glance(mod_ap1)
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC
## * <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.00433 0.00382 1.77 8.61 0.00339 2 -3949. 7903. 7920.
## # ... with 2 more variables: deviance <dbl>, df.residual <int>
Com um R² de 0.004325186 podemos perceber que o que o participante pensa sobre si mesmo a cerca da atração não tem tanta significância (separadamente) na decisão.
mod_ap2 <- lm(like ~ attr,
data = brainy_sexy)
glance(mod_ap2)
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC
## * <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl>
## 1 0.443 0.442 1.33 1573. 1.03e-253 2 -3374. 6753.
## # ... with 3 more variables: BIC <dbl>, deviance <dbl>, df.residual <int>
Com os valores obtidos podemos perceber o modelo com o quão atraente o participante 2 é explica aproximadamente 44% da nossa variável resposta (like).
mod_ap1p2 <- lm(like ~ attr3_s + attr,
data = brainy_sexy)
glance(mod_ap1p2)
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC
## * <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl>
## 1 0.444 0.443 1.33 791. 3.99e-253 3 -3371. 6750.
## # ... with 3 more variables: BIC <dbl>, deviance <dbl>, df.residual <int>
Como vimos mais acima, o quão atraente o participante 1 é não tem tanta significância sobre a decisão final, era esperado que também obtivessemos praticamente o valor da “significância” o valor do participante 2.
sexy_diff <- brainy_sexy %>% mutate(attr_dif = attr - attr3_s)
mod_diff2 <- lm(like ~ attr_dif,
data = sexy_diff)
glance(mod_diff2)
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC
## * <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl>
## 1 0.231 0.230 1.56 594. 6.89e-115 2 -3693. 7392.
## # ... with 3 more variables: BIC <dbl>, deviance <dbl>, df.residual <int>
Visualizando a importância da diferença do quão atraente “são” os participantes, percebemos que esse modelo explica aproximadamente 23% dos dados.
Utilizaremos o modelo lm(like ~ attr3_s + attr).
tidy(mod_ap1p2,
conf.int = TRUE,
conf.level = 0.95)
## # A tibble: 3 x 7
## term estimate std.error statistic p.value conf.low conf.high
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 1.93 0.166 11.6 2.25e- 30 1.61 2.26
## 2 attr3_s 0.0433 0.0191 2.26 2.39e- 2 0.00572 0.0808
## 3 attr 0.628 0.0159 39.6 7.87e-253 0.597 0.659
tidy(mod_ap1p2,
conf.int = TRUE,
conf.level = 0.95) %>%
filter(term != "(Intercept)") %>%
ggplot(aes(term, estimate, ymin = conf.low, ymax = conf.high)) +
geom_errorbar(size = 0.8, width= 0.4) +
geom_point(color = "darkgreen", size = 2) +
geom_hline(yintercept = 0, colour = "darkred") +
labs(x = "Variável",
y = "Valor estimado (95% de confiança)")
O valor para atração dos dois participantes tem valores positivos e que não cortam o eixo y = 0. Ou seja, com 95% de confiança, podemos dizer que eles possuem um efeito sempre positivo na variável resposta.
Como nenhuma das duas variáveis passam pelo eixo y = 0 e que também o modelo em questão explica 44% da nossa variável resposta, podemos dizer com 95% de confiança, que é sim significante.
Não podemos considerar esse modelo relevante pois ele explica menos de 50% (apenas 44%) dos nossos dados. Embora seja um valor maior que para o modelo utilizando a inteligência dos participantes, ainda não é um modelo bom o suficiente.
mod_final <- lm(like ~ intel + attr,
data = brainy_sexy)
glance(mod_final)
## # A tibble: 1 x 11
## r.squared adj.r.squared sigma statistic p.value df logLik AIC
## * <dbl> <dbl> <dbl> <dbl> <dbl> <int> <dbl> <dbl>
## 1 0.511 0.510 1.24 1033. 5.45e-308 3 -3244. 6497.
## # ... with 3 more variables: BIC <dbl>, deviance <dbl>, df.residual <int>
Com o modelo em questão, conseguimos explicar 51% da nossa amostra. O que não é um valor muito grande, mas como estamos utilizando uma quantidade bem menor de atributos que o conjunto de dados nos fornece, acredito que é uma boa marca.
tidy(mod_final,
conf.int = TRUE,
conf.level = 0.95)
## # A tibble: 3 x 7
## term estimate std.error statistic p.value conf.low conf.high
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 0.473 0.142 3.32 9.10e- 4 0.194 0.753
## 2 intel 0.323 0.0195 16.6 5.45e- 58 0.285 0.362
## 3 attr 0.529 0.0161 33.0 2.33e-190 0.498 0.561
tidy(mod_final,
conf.int = TRUE,
conf.level = 0.95) %>%
filter(term != "(Intercept)") %>%
ggplot(aes(term, estimate, ymin = conf.low, ymax = conf.high)) +
geom_errorbar(size = 0.8, width= 0.4) +
geom_point(color = "darkgreen", size = 2) +
geom_hline(yintercept = 0, colour = "darkred") +
labs(x = "Variável",
y = "Valor estimado (95% de confiança)")
O valor para as variáveis participantes tem valores positivos e que não cortam o eixo y = 0. Ou seja, com 95% de confiança, podemos dizer que eles possuem um efeito sempre positivo na variável resposta, ou seja, quando a atração aumenta (principalmente) e a inteligência aumentam, a tendência é que a chance de o participante 1 gostar do participante 2 também aumenta.
Como nenhuma das duas variáveis passam pelo eixo y = 0 e que também o modelo em questão explica 51% da nossa variável resposta, podemos dizer com 95% de confiança, que é sim significante.
Como dito mais acima, acredito ser uma boa marca dado o modelo que está sendo usado. Contudo, um modelo que explica apenas 51% dos dados não é lá o modelo mais adequado para uma regressão.
Mas como a nossa pergunta está interessada apenas em verificar se existe influência das duas variáveis na hora de dar o like no participante, é um modelo válido porém não o melhor existente.
mod_final.res <- resid(mod_final)
std.resid <- rstandard(mod_final)
like <- brainy_sexy$like
resid_data <- data.frame(mod_final.res, std.resid,like,
stringsAsFactors = FALSE)
resid_data %>%
sample_n(10)
## mod_final.res std.resid like
## 529 -0.8842484 -0.7121143 3
## 1498 6.1302316 4.9434756 9
## 577 0.4988089 0.4015338 8
## 1777 2.0281365 1.6319354 9
## 327 0.2340290 0.1882591 7
## 799 0.4102265 0.3300399 6
## 615 1.0281365 0.8272877 8
## 1853 2.7633565 2.2228974 9
## 567 3.5572315 2.8679270 8
## 131 1.0867915 0.8741893 7
resid_data %>%
ggplot(aes(like, mod_final.res)) +
geom_point(alpha = 0.4) +
geom_hline(yintercept = 0,
color = "darkorange") +
labs(x = "Variável Resposta (like)", y = "Resíduos") +
ggtitle("Análise de Resíduos")
Aparentemente o modelo escolhido não parece se adequar/ajustar aos dados de uma forma convincente.
Como já dito mais acima, a inteligência e a atração pelo participante 2 tem uma influência positiva. Quão mais inteligente e atraente o participante 1 notar que o participante 2 é, maior é o valor do like.
Com 95% de confiança, nós temos evidências de que são fatores significantes. Como vimos, o intervalo de confiança é totalmente acima do eixo y = 0.
Como já mencionado em textos mais acima, o fator que tem mais “peso” na nossa variável resposta é o quão o participante 1 acha o participante 2. Em outras palavras, isso quer dizer que para um encontro em condições semelhantes às que estão presentes na nossa amostra, é mais interessante para você solteirão ou solteirona ser atraente (attr) do que ser inteligente (intel) pois assim a chance de você receber um valor alto no like é melhor.
Infelizmente a frase de Irene Adler não se aplica à nossa amostra.